Bases de Données

Pour la gestion des accents sur les fichiers SQL clique ICI

Méthode générale

Questions à se poser pour écrire la requête :

  • que voudra-t-on faire des informations obtenues ?
    • les afficher : SELECT
    • les modifier : UPDATE
    • les supprimer DELETE
  • quelles sont les informations nécessaires pour cela ? => noms des attributs correspondants
  • dans quelle(s) table(s) ces informations se trouvent-elles ?
    • => FROM
    • Si les informatons sont dans des tables différentes, il faudra réaliser une jointure.
      • Dans ce cas, quelle(s) sont les attributs (colonnes) permettant de relier les informations contenues dans les tables ?
  • faut-il appliquer au résultat des filtres, des agrégateurs, un tri ... pour obtenir les information souhaitées?
Exercice 1 : Agences de locations de voitures

Le schéma relationnel

Schema_Relationnel_Locations

Visualiser toute la relation Agences

SQL
SELECT *
FROM vehicules
WHERE kilometrage>10000


Exercice 2 : Les communes, départements et régions de France

Le schéma relationnel

!A venir

Exécuter les 3 requêtes suivantes:

SQL
SELECT * 
FROM communes
SQL
SELECT * 
FROM departements
SQL
SELECT * 
FROM regions


Q1. Quelles sont les communes du département 60 ?



Q2. Ecrire une requêtes permettant de donner le nombre de communes du département 60 ?



Exercice 3 : Gestion simplifier d'un lycée

On travaille avec la base de données dont le schéma est donné ci-dessous:

Exécuter les 2 requêtes exemples suivantes:

On veut afficher le nom du ou des professeurs enseignant la spécialité pour le groupe dont l'identifiant grpid est 1SVTG1.

Il s'agit d'un affichage, la requête commence par SELECT.

Les noms des professeurs sont contenus dans la colonne nom de la table Professeur.

L'information sur qui enseigne quoi est dans la table Enseigne. Cette table contient les grpid.

On va donc devoir effectuer une jointure entre les deux tables.

Pour que le résultat associe un professeur aux groupes où il enseigne, on va utiliser comme critère de jointure l'égalité entre les pid, en écrivant soit ON professeur.pid=Enseigne.pid.

De plus on ne veut que les noms du ou des professeurs enseignant du groupe 1SVTG1 : on va donc appliquer un filtre avec WHERE : WHERE grpid="1SVTG1"

La requête complète s'écrira :

SQL
SELECT nom FROM Professeur 
JOIN Enseigne ON Professeur.pid=Enseigne.PID 
WHERE grpid='1SVTG1'

On veut les noms des élèves suivant la spécialité d'intitulé "Physique-Chimie". Il s'agit d'un affichage, la requête commence par SELECT.

Les noms des élèves sont dans la colonne nom de la table Lyceen. Les intitulés des spécialités sont dans la table Groupe.
L'information sur les inscriptions en spécialité est dans la table Affectation.

On va donc devoir faire une jointure entre ces trois tables. La jointure entre Lyceen et Affectation va être faite en utilisant id, celle entre Affectation et Groupe en utilisant grpid.

On veut seulement les noms des élèves inscrits en Physique-Chimie : on ajoute donc un filtre "WHERE".

La requête peut s'écrire :

SQL
SELECT nom FROM Lyceen
JOIN Affectation ON Affectation.id = Lyceen.id
JOIN Groupe ON Groupe.grpid=Affectation.grpid
WHERE Intitule="Physique-Chimie"



Exercice 1 : Jointures impliquant deux tables

a. Utiliser une jointure entre les tables Lyceen et Affectation pour associer chaque lycéen inscrit dans un groupe de spécialité avec chacun des identitfiants grpid des groupes où il est inscrit, en affichant le résultat sous la forme

nom prenom grpid
Tilliou Sébastien TMathG2
Hébert Juliette TMathG2
Ouaderni Lina TSVTG1
etc ... ...


b. Utiliser une jointure entre les tables Professeur et Enseigne pour associer chaque nom de professeur avec chacun des identitfiants grpid des groupes de spécialité dans lesquels il enseigne. On doit obtenir une table de la forme

nom grpid
Mr Bernal 1NSIG1
Mme Lieville TMathG2
Mr El Khatib 1MathG2
Mr Scalaire 1MathG3

comptant 27 lignes



📄 Accueil